/**
 * Created by Administrator on 2017/8/24.
 */
win=window;
_=document||win.document;
log=console.log;
//模拟jQuery选择器
function $(query) {
    //定义返回数组
    var result=[];
    for(var i=0;i<arguments.length;i++)
    {
        //获取参数
        var s=arguments[i];
        //参数为方法
        if(typeof s === "function")
        {
            //则把方法放入onload事件
              win.addEventListener("load",s);
            //把方法push进返回数组
            result.push(s)
        }
        //参数为字符串
        else if(typeof s === "string")
        {
            //根据id获取对象 并把对象push到数组中
            if(s.substr(0,1)=="#")
            {
                result.push(_.getElementById(s.substr(1)));
            }
            //同理
            else if(s.substr(0,1)==".")
            {
                result.push(_.getElementsByClassName(s.substr(1)));
            }
            //懒得注释
            else
            {
                result.push(_.getElementsByTagName(s))
            }
        }
    }
    //返回数组为空 返回window对象
    if(result.length==0)
    {
        result=win
    }
    //数组只有一项  就脱掉数组的衣服
    else if(result.length==1)
    {
        result=result[0]
    }
    //返回对象
    return result
}
//封装XMLHttpRequest以及跨域获取json技术 使用方法：不告诉你
function ajax(json) {
    //数据
    var data=json.data;
    //目标地址
    var url=json.url;
    //请求方式 默认get 顺便大写处理了
    var method=json.method;
    if(!method)
    {
        method="GET"
    }
    method=method.toLocaleUpperCase();
    //是否为跨域请求 默认否
    var isCrossDomain=json.cross_domain;
    //是否为异步请求 默认是 sync是同步的意思 async才是异步的意思
    var sync=json.sync;
    //ajax请求成功执行的函数
    var success=json.success;
    //数据字符串
    var dataStr="";
    //合成数据字符串
    for(var key in data)
    {
        if(data.hasOwnProperty(key))
        {
            dataStr=dataStr+"&"+key+"="+data[key]
        }
    }
    //验证、处理数据字符串
    if(dataStr!="")
    {
        dataStr=dataStr.substr(1)
    }
    //判断是否跨域  处理跨域请求 jsonp 合成地址 包括请求数据
    //跨域请求需要自定义回调函数
    if(isCrossDomain)
    {
        url=url+"?"+dataStr;
        //生成标签 不解释
        _.script=_.createElement("script");
        _.script.setAttribute("src",url);
        var head=$("head")[0];
        head.appendChild(_.script)
    }
    //处理站内请求 ajax
    else
        {
        var xhr;
        if (XMLHttpRequest)
        {
            xhr=new XMLHttpRequest()

        }
        //为了兼容IE小儿子 勉为其难的写下else
        else
            {
                xhr=new ActiveXObject("Microsoft.XMLHTTP")
            }
        //异步请求状态监控
        if(!sync)
        {
            xhr.onreadystatechange=function ()
            {
                //log("readyState:"+xhr.readyState+" \r\n____status:"+xhr.status);
                //接收到数据执行success方法
                if(xhr.readyState==4&&xhr.status==200)
                {
                    success(xhr.responseText)
                }
            }
        }
        //发送请求和数据
        if(method="GET")
        {
            xhr.open(method,url,!sync);
            xhr.send(dataStr)
        }
        else if(method="POST")
        {
            xhr.open(method,url,!sync);
            //post请求必须包含请求头 get则不必
            xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
            xhr.send(dataStr)
        }
        //同步请求执行 不推荐使用同步
        if(sync)
        {
            win.xhrResTxt=success(xhr.responseText)
        }
    }
}
